package TreeSet;

import java.util.ArrayList;
import java.util.Iterator;

class Demo<ABC> {
    ABC name;
    public void show(ABC name) {
        this.name = name;
    }
}
public class GenericDemo1 {
    public static void main(String[] args) {
//        创建集合对象
        ArrayList list = new ArrayList();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        list.add("true");
        list.add("123");
        // 迭代集合
        for (Iterator it = list.iterator(); it.hasNext();) {
            Object obj =  it.next();
            /*
             * 需求：想使用String类型的特有的函数查看字符串的长度
             * Object obj =  it.next();上述代码发生多态了，想使用String类中特有的函数必须得强制类型转换
             * 可是由于集合可以存储任意类型的对象，而这里只是适合String类型的强制类型转换，其他数据类型会报classCastException类转换
             * 异常，如果为了不报异常只能在转换前需要判断，这样做比较麻烦
             * 由于这里的需求只是遍历集合后对于取出来的数据是String类型，查看他的长度，其他数据类型不管
             * 我们能否想办法不让运行时报错呢，在存储的时候就告诉我，只要是String类型的可以存储，其他数据类型不让存储，这样做起来效率会高一些
             */
            String s=(String)obj;
            System.out.println(s+"长度是"+s.length());
        }

        Demo<Integer> d = new Demo<Integer>();
        d.show(123);
        System.out.println(d.name);
    }
}
